Formule
5.3 – Formule

Formule atomiche

Fissiamo un linguaggio del prim’ordine \(L\).

Definizione Una formula atomica (nel linguaggio \(L\)) è una stringa della forma \[(R ( t_{1} , \dots , t_{n} ))\] dove \(R\) è un simbolo di predicato \(n\)-ario in \(L\) e \(t_{1}, \dotsc, t_{n}\) sono termini (nel linguaggio \(L\)), oppure della forma \[(t_{1} = t_{2})\] dove \(t_{1} , t_{2}\) sono termini (nel linguaggio \(L\)).

Attenzione! Anche in questo caso le virgole non sono necessarie, ma possono aiutare nella lettura della formula.

Formule atomiche, equazioni e disequazioni Consideriamo il linguaggio \(L = \{ <,+, \cdot , 1, 0 \}\) dove \(<\) è un simbolo di relazione binario, \(+\) e \(\cdot\) sono simboli di funzione binari, e \(1,0\) sono simboli di costante. Abbiamo visto che il termine \(t\) \[+( \cdot(x,x), 1)\] corrisponde (utilizzando la notazione infissa) al polinomio \[x^2+1\]

La formula atomica \[(+( \cdot(x,x), 1)=0)\] eprime allora nel linguaggio \(L\) l’equazione \[x^2+1=0,\]

mentre \[(<(+( \cdot(x,x), 1),0))\] esprime, utilizzando la notazione infissa per \(<\), la disequazione \(x^2+1<0\).

Per riconoscere se una data stringa è una formula atomica, si procede come segue:

Algoritmo per il riconoscimento di formule atomiche

Nei restanti casi, la stringa data non era una formula atomica.

Esempio 1 - Formule atomiche

Sia \(L = \{ P, f,c \}\) con \(P\) simbolo di relazione binario, \(f\) simbolo di funzione unario e \(c\) simbolo di costante. Verifichiamo se la stringa \[(P(f(x)c))\] è una formula atomica oppure no.

Dall’analisi fatta, risulta che la stringa è del tipo \((P(t_{1}t_{2}))\), dove \(t_{1}\) è \(f(x)\) e \(t_{2}\) è \(c\): poiché questi ultimo sono termini ben formati, la stringa è una formula atomica.Reintroducendo le virgole, tale formula atomica si scrive \[(P(f(x),c)).\]

Esempio 2 - Formule atomiche

Sia \(L = \{ P, f,c \}\) con \(P\) simbolo di relazione binario, \(f\) simbolo di funzione unario e \(c\) simbolo di costante. Verifichiamo se la stringa \[( f(f(x))= f(c))\] è una formula atomica oppure no.

Dall’analisi fatta, risulta che la stringa è del tipo \((t_{1} = t_{2})\), dove \(t_{1}\) è \(f(f(x))\) e \(t_{2}\) è \(f(c)\):poiché questi ultimo sono termini ben formati, la stringa è una formula atomica.

Formule del prim’ordine

Formule del prim’ordine L’insieme delle formule del linguaggio \(L\) (o, più brevemente, \(L\)-formule) è definito ricorsivamente dalle clausole:

Useremo le lettere greche \(\phi\), \(\psi\), e \(\chi\), variamente decorate, per le formule.

Tecnicamente, bisognerebbe di nuovo dare una definizione per ricorsione degli insiemi \(\mathsf{Fml}_{n}\) per \(n\in \mathbb{N}\): \(\mathsf{Fml}_{0}\) è l’insieme delle formule atomiche e \(\mathsf{Fml}_{n+1}\) è l’unione di \(\mathsf{Fml}_{n}\) con l’insieme delle formule che si ottengono applicando una delle regole qui sopra a formule in \(\mathsf{Fml}_{n}\). L’insieme delle formule è allora \(\mathsf{Fml} = \bigcup_{n \in \mathbb{N}} \mathsf{Fml}_{n}\). L’altezza \(ht(\phi)\) di una formula \(\phi \in \mathsf{Fml}\) è definita nella maniera usuale.

La costante logica principale di una \(L\)-formula (non atomica) \(\phi\) è l’ultima costante logica introdotta per creare \(\phi\) in accordo con la definizione ricorsiva data. Più precisamente:

  1. se \(\phi\) è della forma \((\neg\psi)\), allora \(\neg\) è la costante logica principale di \(\phi\), mentre \(\psi\) viene detta sottoformula principale di \(\phi\);

  2. se \(\phi\) è della forma \((\psi\mathrel{\Box} \chi)\), dove \(\Box\) è uno dei connettivi binari \(\wedge\), \(\vee\), \(\rightarrow\), \(\leftrightarrow\), allora \(\Box\) è la costante logica principale di \(\phi\), mentre \(\psi\) e \(\chi\) sono le sottoformule principali di \(\phi\);

  3. infine, se \(\phi\) è della forma \((\exists x \psi)\) oppure della forma \((\forall x \psi)\), allora \(\exists\) e \(\forall\) sono, rispettivamente, la costante logica principale di \(\phi\), mentre \(\psi\) viene detta sottoformula principale di \(\phi\).

Nei casi 

1 e 2

parliamo anche di connettivo principale di \(\phi\), nel caso 

3

parliamo invece di quantificatore principale di \(\phi\).

Diciamo che una formula \(\phi\) è una negazione, congiunzione, disgiunzione, implicazione, bi-implicazione, formula esistenziale oppure formula universale quando la sua costante logica principale è \(\neg\), \(\wedge\), \(\vee\), \(\rightarrow\), \(\leftrightarrow\), \(\exists\) o \(\forall\), rispettivamente.

Per individuare la costante logica principale di una \(L\)-formula \(\phi\) si usa (l’ovvia variante del)l’algoritmo visto per la logica proposizionale.

Il primo e l’ultimo simbolo della stringa devono essere una parentesi sinistra e una parentesi destra, rispettivamente. Consideriamo il secondo simbolo della stringa.

Albero sintattico di una formula

Albero sintattico di una formula

  1. Si etichetta la radice con la formula data.

  2. Sia \(\phi\) la formula che compare nell’etichetta di un nodo:

Esempio albero sintattico

L’albero sintattico di \( (\exists x ((\neg (R(x,c))) \wedge ((P(x)) \to (f(x) = c)))) \) è

Le formula che compaiono nei nodi dell’albero sintattico si chiamano sottoformule della formula data.

Anche per le formule del prim’ordine vale la regola che l’altezza della formula è uguale all’altezza dell’albero diminuita di una unità.

L’albero sintattico in forma compatta dello stesso termine: \[(\exists x ((\neg (R(x,c))) \wedge ((P(x)) \to (f(x) = c))))\] è

Le formula che compaiono nei nodi dell’albero sintattico si chiamano sottoformule della formula data.

Anche per le formule del prim’ordine vale la regola che l’altezza della formula è uguale all’altezza dell’albero diminuita di una unità.

Esercizio albero sintattico

Calcolare l’albero sintattico della formula \[((\exists x (\forall y ( (P ( x , y )) \to (Q ( x )) ) ) )\to ((\forall z (R ( z ))) \vee (S ( z )))) .\]

Soluzione: